home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / machserver / notes / callsSync < prev    next >
Text File  |  1991-11-21  |  20KB  |  680 lines

  1. # Replace master locks and monitor locks with C Threads mutex variables.
  2. # In the kernel replace event-based waiting with waiting on C Threads
  3. # condition variables.  
  4.  
  5. # For user locks and condition variables, we would like to maintain binary
  6. # compatibility with existing Sprite code.  This could get ugly, though, given
  7. # that we want to ditch the event-based internals.  So, we'll punt on binary
  8. # compatibility (which should be okay, since there are very few programs that
  9. # use Sprite synchronization calls) and change Sprite primitives to C Threads
  10. # primitives (in some almost source-compatible way).  The "almost" refers to
  11. # not supporting the "wakeup on signal" flag.  We will assume this flag isn't
  12. # required by user programs and deal with problems that occur if this
  13. # assumption is wrong (hopefully by fixing the user code).
  14.  
  15. # There will also be a general per-process condition variable that can be used
  16. # for waiting on remote hosts.  This will also be the condition variable that
  17. # replaces the PCB address in the event-based code.
  18.  
  19. # For signals, probably don't need extra bits in proc syncFlags.  Instead,
  20. # just check when the process comes back from the context switch whether
  21. # there's a signal pending.  This does introduce a race condition, in case a
  22. # signal happens at about the same time the condition is woken up: you won't
  23. # know which event actually caused the wakeup to occur.  But do you care?
  24. # (The alternative is to add a "wakeup on signal" bit and a "was woken by
  25. # signal" bit to the proc syncFlags.)
  26. # Add a field pointing to the condition that the process is
  27. # waiting on.
  28.  
  29. LOCK_MONITOR            # keep.
  30.     dev/{devNet.c,devTty.c}
  31.     dev/symm.md/devScedTape.c
  32.     dev/sun3.md/devMouse.c
  33.     fscache/{fscacheOps.c,fscacheBlocks.c,fscacheReadAhead.c}
  34.     fsconsist/{fsconsistIOClient.c,fsconsistCache.c}
  35.     fsdm/fsdmDisk.c
  36.     fsio/{fsioPipe.c,fsioStream.c}
  37.     fslcl/fslclNameHash.c
  38.     fspdev/fspdevSrv.c
  39.     fsprefix/fsprefixOps.c
  40.     fsrmt/fsrmtFile.c
  41.     fsutil/{fsutilHandle.c,fsutilNotify.c,fsutilHandleScavenge.c}
  42.     fsutil/fsutilRecovery.c
  43.     lfs/{lfsFileLayout.c,lfsLoad.c,lfsSeg.c,lfsMem.c,lfsCacheBackend.c}
  44.     lfs/lfsDirOpLog.c
  45.     mem/memory.c
  46.     net/netArp.c
  47.     ofs/{ofsAlloc.c,ofsIo.c,ofsFileDesc.c}
  48.     proc/{procDebug.c,procExit.c,procTable.c,procTimer.c,procRecovery.c}
  49.     proc/{procEnviron.c,procMigrate.c,procFamily.c}
  50.     prof/profProfil.c
  51.     recov/{recovery.c,recovProc.c}
  52.     rpc/{rpcSrvStat.c,rpcHistogram.c,rpcCltStat.c}
  53.     sig/signals.c
  54.     sync/syncSysV.c
  55.     utils/traceLog.c
  56.     vm/{vmCOW.c,vmSeg.c,vmStack.c,vmPage.c,vmMap.c}
  57.     vm/symm.md/vmSymm.c,
  58.     vm/{vmMigrate.c,vmServer.c,vmSubr.c,vmSwapDir.c,vmPrefetch.c}
  59. MASTER_LOCK            # call Sync_GetLock.
  60.     mach/symm.md/machMon.c
  61.     dev/{devNet.c,devQueue.c}
  62.     dev/ds5000.md/devDC7085.c
  63.     dev/ds5000.md/devGraphics.c
  64.     dev/symm.md/{devDynixBlockDevice.c,devScedTape.c}
  65.     dev/symm.md/{devConsole.c,symm.md/devScedConsole.c}
  66.     dev/devSCSIDisk.c
  67.     dev/sun3.md/{devSCSI3.c,devZ8530.c,devSCSI0.c,devJaguarHBA.c}
  68.     dev/sun3.md/devXylogics450.c
  69.     dev/sun4.md/{devJaguarHBA.c,devSCSI0.c,devSCSI3.c,devXylogics450.c}
  70.     dev/sun4.md/devZ8530.c
  71.     dev/ds3100.md/{devDC7085.c,devSII.c,devGraphics.c}
  72.     dev/devSyslog.c
  73.     dev/{devBlockDevice.c,devScsiDevice.c,devDiskStats.c}
  74.     lfs/lfsSeg.c
  75.     net/ds5000.md/netLE.c
  76.     net/ds5000.md/netLEXmit.c
  77.     net/netRoute.c
  78.     net/sun3.md/{netLE.c,netUltra.c,netLEXmit.c}
  79.     net/sun4.md/netUltra.c
  80.     net/netArp.c
  81.     net/netCode.c
  82.     proc/procTable.c
  83.     proc/procServer.c
  84.     prof/sun3.md/_mcount.c
  85.     prof/sun4.md/_mcount.c
  86.     prof/ds3100.md/_mcount.c
  87.     prof/ds5000.md/_mcount.c
  88.     rpc/{rpcClient.c,rpcInit.c,rpcDaemon.c,rpcServer.c,rpcCall.c}
  89.     rpc/rpcOutput.c
  90.     sched/schedQueue.c
  91.     sched/schedule.c
  92.     sync/{syncSleep.c,syncLock.c,sync.h,syncUser.c,syncLockStat.c}
  93.     sys/sysPrintf.c
  94.     timer/timerClock.c
  95.     timer/timerQueue.c
  96.     utils/trace.c
  97.     vm/sun3.md/vmSun.c
  98.     vm/sun4.md/vmSun.c
  99.     vm/vmTrace.c
  100.     vm/ds3100.md/vmPmax.c
  101.     vm/ds5000.md/vm3max.c
  102. MASTER_UNLOCK            # use Sync_Unlock.
  103.     mach/symm.md/machMon.c
  104.     dev/devNet.c
  105.     dev/devQueue.c
  106.     dev/ds5000.md/devDC7085.c
  107.     dev/ds5000.md/devGraphics.c
  108.     dev/symm.md/devDynixBlockDevice.c
  109.     dev/symm.md/devScedTape.c
  110.     dev/symm.md/devConsole.c
  111.     dev/symm.md/devScedConsole.c
  112.     dev/devSCSIDisk.c
  113.     dev/sun3.md/devSCSI3.c
  114.     dev/sun3.md/devZ8530.c
  115.     dev/sun3.md/devSCSI0.c
  116.     dev/sun3.md/devJaguarHBA.c
  117.     dev/sun3.md/devXylogics450.c
  118.     dev/sun4.md/devJaguarHBA.c
  119.     dev/sun4.md/devSCSI0.c
  120.     dev/sun4.md/devSCSI3.c
  121.     dev/sun4.md/devXylogics450.c
  122.     dev/sun4.md/devZ8530.c
  123.     dev/ds3100.md/devDC7085.c
  124.     dev/ds3100.md/devSII.c
  125.     dev/ds3100.md/devGraphics.c
  126.     dev/devSyslog.c
  127.     dev/devBlockDevice.c
  128.     dev/devScsiDevice.c
  129.     dev/devDiskStats.c
  130.     lfs/lfsSeg.c
  131.     net/ds5000.md/netLE.c
  132.     net/ds5000.md/netLEXmit.c
  133.     net/netRoute.c
  134.     net/sun3.md/netLE.c
  135.     net/sun3.md/netUltra.c
  136.     net/sun3.md/netLEXmit.c
  137.     net/sun4.md/netUltra.c
  138.     net/netArp.c
  139.     net/netCode.c
  140.     proc/procTable.c
  141.     proc/procRemote.c
  142.     proc/procServer.c
  143.     prof/sun3.md/_mcount.c
  144.     prof/sun4.md/_mcount.c
  145.     prof/ds3100.md/_mcount.c
  146.     prof/ds5000.md/_mcount.c
  147.     rpc/rpcClient.c
  148.     rpc/rpcInit.c
  149.     rpc/rpcDaemon.c
  150.     rpc/rpcServer.c
  151.     rpc/rpcCall.c
  152.     rpc/rpcOutput.c
  153.     sched/schedQueue.c
  154.     sched/schedule.c
  155.     sync/syncSleep.c
  156.     sync/syncLock.c
  157.     sync/sync.h
  158.     sync/syncUser.c
  159.     sync/syncLockStat.c
  160.     sys/sysPrintf.c
  161.     timer/timerClock.c
  162.     timer/timerQueue.c
  163.     utils/trace.c
  164.     vm/sun3.md/vmSun.c
  165.     vm/sun4.md/vmSun.c
  166.     vm/vmTrace.c
  167.     vm/ds3100.md/vmPmax.c
  168.     vm/ds5000.md/vm3max.c
  169. SYNC_MAX_PRIOR            # parameter for lock instrumentation.  keep.
  170.     sync/syncTypes.h
  171.     sync/syncLock.h
  172.     sync/syncLockStat.c
  173. SYNC_WAIT_COMPLETE        # (companion to SYNC_WAIT_REMOTE).  keep.
  174.     sync/syncLock.c
  175.     sync/syncTypes.h
  176. SYNC_WAIT_REMOTE        # (waiting for a remote machine to do
  177.                 # something).  keep.
  178.     sync/syncLock.c
  179.     sync/syncTypes.h
  180. SyncEventWaitInt        # delete.
  181.     sync/syncSleep.c
  182.     sync/syncLock.c
  183.     sync/syncUser.c
  184.     sync/syncInt.h
  185. SyncEventWakeupInt        # delete.
  186.     sync/syncLock.c
  187.     sync/syncUser.c
  188.     sync/syncInt.h
  189. Sync_AddPrior            # lock instrumentation.  keep.
  190.     proc/procTable.c
  191. Sync_Broadcast            # Initialize the condition variable if
  192.                 # necessary, and call condition_broadcast.
  193.     Include/user/sync.h
  194.     fscache/{fscacheReadAhead,fscacheBlocks}.c
  195.     fsconsist/fsconsistCache.c
  196.     fsdm/fsdmDisk.c
  197.     fspdev/fspdevSrv.c
  198.     fsprefix/fsprefixOps.c
  199.     fsutil/{fsutilHandle,fsutilRecovery}.c
  200.     lfs/{lfsDirOpLog,lfsFileLayout,lfsSeg,lfsMem}.c
  201.     net/sun3.md/netUltra.c
  202.     net/sun4.md/netUltra.c
  203.     proc/{procDebug,procExit,procTable,procRecovery,procMigrate}.c
  204.     proc/procFamily.c
  205.     recov/recovery.c
  206.     vm/{vmCOW,vmSeg,vmPage,vmMap,vmServer,vmPrefetch}.c
  207. Sync_Condition            # user and kernel-level condition variable.
  208.                 # Replace the "waiting" flag with a "struct
  209.                 # condition."  Also need a flag telling
  210.                 # whether the condition has been initialized
  211.                 # yet.
  212.     Include/user/sync.h
  213.     dev/symm.md/{devDynixBuf,devScedTape}.h
  214.     dev/symm.md/devDynixBlockDevice.c
  215.     dev/symm.md/devScedConsole.h
  216.     dev/sun3.md/{devJaguarHBA,devXylogics450}.c
  217.     dev/sun4.md/{devJaguarHBA,devXylogics450}.c
  218.     dev/devBlockDevice.c
  219.     dev/devScsiDevice.c
  220.     fs/fs.h
  221.     fscache/fscache.h
  222.     fscache/fscacheBlocks.c
  223.     fsconsist/fsconsist.h
  224.     fsdm/fsdm.h
  225.     fspdev/fspdevInt.h
  226.     fsprefix/fsprefix.h
  227.     fsutil/fsutil.h
  228.     fsutil/fsutilHandle.c
  229.     lfs/lfsInt.h
  230.     lfs/lfsMem.c
  231.     lfs/lfsDirLogInt.h
  232.     net/sun3.md/netUltra.c
  233.     net/netArp.h
  234.     net/sun4.md/netUltra.c
  235.     net/netUltraInt.h
  236.     proc/procDebug.c
  237.     proc/procTypes.h
  238.     proc/{procMisc,procRecovery,procMigrate,procFamily}.c
  239.     proc/procServer.h
  240.     recov/recovery.c
  241.     rpc/{rpcClient,rpcServer}.h
  242.     rpc/{rpcDaemon,rpcCall}.c
  243.     sig/signals.c
  244.     vm/vmSeg.c
  245.     vm/{vmInt,vm}.h
  246.     vm/{vmPage,vmMap,vmServer}.c
  247. Sync_EventWait            # (gone)
  248.     recov/recovProc.c
  249.     sync/syncLock.c
  250.     sync/sync.h
  251. Sync_EventWakeup        # (gone)
  252.     recov/recovProc.c
  253. Sync_GetLock            # (obtains monitor locks)  Use mutex_try_lock
  254.                 # so you can keep track of misses.  Will need
  255.                 # to check for initialization of the lock?
  256.                 # Set process state before & after obtaining
  257.                 # lock.
  258.     dev/symm.md/devDynixBlockDevice.c
  259.     vm/lock.h
  260. Sync_GetLockStats        # keep.
  261.     sys/sysCalls.c
  262. Sync_GetWaitToken        # keep.
  263.     fs/fsSelect.c
  264.     fs/fsStreamOps.c
  265.     proc/procExit.c
  266.     sync/syncLock.c
  267.     sync/sync.h
  268. Sync_Init            # dike out the event-list initialization.
  269.     main/sun3.md/mainInit.c
  270.     main/sun4.md/mainInit.c
  271.     main/ds3100.md/mainInit.c
  272.     main/symm.md/mainInit.c
  273. Sync_Instrument            # (per-processor lock instrumentation).  keep.
  274.     sys/sysCalls.c
  275. Sync_IsRegistered        # keep.
  276.     sync/sync.h
  277. Sync_KernelLock            # replace "inUse" and "waiting" with a struct
  278.                 # mutex.  Flush "class".  Keep remaining
  279.                 # fields.
  280. Sync_Lock            # (see Sync_KernelLock and Sync_UserLock).
  281.     Include/user/sync.h
  282.     dev/devNet.c
  283.     dev/tty.h
  284.     dev/devTty.c
  285.     dev/symm.md/devDynixBuf.h
  286.     dev/symm.md/devScedTape.c
  287.     fs/fsSelect.c
  288.     fs/sizeof/main.c
  289.     fs/fsStreamOps.c
  290.     fscache/fscache.h
  291.     fscache/fscacheBlocks.c
  292.     fsconsist/fsconsist.h
  293.     fsconsist/fsconsistIOClient.c
  294.     fsdm/fsdmDisk.c
  295.     fsio/{fsioPipe,fsioStream}.c
  296.     fslcl/fslclNameHash.c
  297.     fspdev/fspdevInt.h
  298.     fsprefix/fsprefixOps.c
  299.     fsrmt/fsrmtFile.c
  300.     fsutil/fsutil.h
  301.     fsutil/{fsutilHandle,fsutilNotify,fsutilHandleScavenge}.c
  302.     libc/MemData.c
  303.     libc/memInt.h
  304.     lfs/lfsInt.h
  305.     lfs/lfsMem.c
  306.     mem/memory.c
  307.     net/netArp.c
  308.     ofs/ofs.h
  309.     ofs/ofsIo.c
  310.     proc/{procDebug,procExit,procTable,procTimer,procMisc,procRecovery}.c
  311.     proc/{procMigrate,procEnviron,procFamily}.c
  312.     prof/profProfil.c
  313.     recov/{recovery,recovProc}.c
  314.     rpc/rpcHistogram.h
  315.     rpc/{rpcSrvStat,rpcCltStat}.c
  316.     sig/signals.c
  317.     sig/sigInt.h
  318.     sys/sysSysCall.c
  319.     vm/vmStack.c
  320.     vm/lock.h
  321.     vm/{vmSwapDir,vmSubr}.c
  322. Sync_LockClear            # (deregisters a lock).  keep.
  323.     fscache/{fscacheReadAhead,fscacheBlocks}.c
  324.     fsconsist/fsconsistCache.c
  325.     fspdev/{fspdevPfs,fspdevSrv}.c
  326.     fsutil/fsutilRecovery.c
  327.     lfs/lfsMain.c
  328.     ofs/ofsDisk.c
  329. Sync_LockInitDynamic        # (initializes a lock at run time).  keep.
  330.     dev/symm.md/devDynixBlockDevice.c
  331.     fscache/{fscacheReadAhead,fscacheBlocks}.c
  332.     fsconsist/{fsconsistIOClient,fsconsistCache}.c
  333.     fspdev/fspdevSrv.c
  334.     fsutil/fsutilRecovery.c
  335.     lfs/{lfsFileLayout,lfsLoad,lfsMain,lfsCacheBackend}.c
  336.     net/netArp.c
  337.     ofs/{ofsAlloc,ofsFileDesc}.c
  338.     proc/{procDebug,procTable,procRecovery,procFamily}.c
  339.     recov/{recovery,recovProc}.c
  340.     rpc/rpcHistogram.c
  341.     sig/signals.c
  342.     vm/{vmStack,vmSubr}.c
  343. Sync_LockInitStatic        # (initializes a lock at compile time).  keep.
  344.     dev/{devNet,devTty}.c
  345.     dev/symm.md/devScedTape.c
  346.     fscache/fscacheBlocks.c
  347.     fsdm/fsdmDisk.c
  348.     fsio/{fsioPipe,fsioStream}.c
  349.     fslcl/fslclNameHash.c
  350.     fsprefix/fsprefixOps.c
  351.     fsrmt/fsrmtFile.c
  352.     fsutil/{fsutilHandle,fsutilNotify,fsutilHandleScavenge}.c
  353.     lfs/lfsMem.c
  354.     mem/memory.c
  355.     ofs/ofsIo.c
  356.     proc/{procExit,procTimer,procMigrate,procEnviron}.c
  357.     prof/profProfil.c
  358.     rpc/{rpcSrvStat,rpcCltStat}.c
  359.     vm/vmSwapDir.c
  360. Sync_LockRegister        # (registration is used for stats (and
  361.                 # debugging?)).  keep.
  362.     proc/procTable.c
  363. Sync_LockStat            # lock instrumentation; keep
  364.     Include/user/sync.h
  365.     sync/syncLockStat.c
  366. Sync_LockStatInit        # (initializes the lock stats data
  367.                 # structures).  keep.
  368.     main/sun3.md/mainInit.c
  369.     main/sun4.md/mainInit.c
  370.     main/ds3100.md/mainInit.c
  371.     main/symm.md/mainInit.c
  372. Sync_MasterBroadcast        # call Sync_Broadcast.
  373.     dev/symm.md/{devScedTape,devDynixBlockDevice,devScedConsole}.c
  374.     dev/sun3.md/{devJaguarHBA,devXylogics450}.c
  375.     dev/sun4.md/{devJaguarHBA,devXylogics450}.c
  376.     dev/devBlockDevice.c
  377.     dev/devScsiDevice.c
  378.     net/netArp.c
  379.     proc/procServer.c
  380.     rpc/{rpcClient,rpcDaemon,rpcServer,rpcCall}.c
  381. Sync_MasterWait            # call Sync_Wait.
  382.     dev/symm.md/{devScedTape,devDynixBlockDevice,devConsole}.c
  383.     dev/sun3.md/{devJaguarHBA,devXylogics450}.c
  384.     dev/sun4.md/{devJaguarHBA,devXylogics450}.c
  385.     dev/devBlockDevice.c
  386.     dev/devScsiDevice.c
  387.     lfs/lfsSeg.c
  388.     net/sun3.md/netUltra.c
  389.     net/sun4.md/netUltra.c
  390.     net/netArp.c
  391.     proc/procServer.c
  392.     rpc/{rpcClient,rpcDaemon,rpcServer,rpcCall}.c
  393. Sync_PrintStat            # (print sync module stats).  keep.
  394.     sys/sysCalls.c
  395. Sync_ProcWait            # (wait because a remote host told us to
  396.                 # wait).  change to sleep on per-process
  397.                 # condition variable.  Check for signal.
  398.     fs/{fsSelect,fsStreamOps}.c
  399.     proc/procExit.c
  400. Sync_ProcWakeup            # (wakeup a process that is waiting on a
  401.                 # remote host).  change to broadcast on
  402.                 # per-process condition variable.
  403.     fs/fsSelect.c
  404.     fsutil/fsutilNotify.c
  405. Sync_RecordHit            # (stats).  keep
  406.     proc/procTable.c
  407. Sync_RecordMiss            # (stats).  keep.
  408.     proc/procTable.c
  409. Sync_RegisterInt        # (does real work of Sync_LockRegister).  Make
  410.                 # sure there's a mutex to avoid race between
  411.                 # concurrent initializations of the same lock.
  412. Sync_RemoteNotify        # keep.
  413.     fsutil/fsutilNotify.c
  414.     proc/procExit.c
  415. Sync_RemoteNotifyStub        # keep.
  416.     rpc/rpcCall.h
  417.     rpc/rpcStubs.c
  418. Sync_RemoteWaiter        # keep.
  419.     fs/{fsSelect,fsPageOps,fsStreamOps}.c
  420.     fscache/fscache.h
  421.     fscache/{fscacheOps,fscacheReadAhead}.c
  422.     fsdm/fsdm.h
  423.     fsdm/fsdmDisk.c
  424.     fsio/fsio.h
  425.     fsio/fsioDevice.c
  426.     fsio/fsioDevice.h
  427.     fsio/fsioFile.c
  428.     fsio/fsioFile.h
  429.     fsio/{fsioLock,fsioPipe}.c
  430.     fsio/fsioPipe.h
  431.     fslcl/fslclLookup.c
  432.     fspdev/fspdevSrv.c
  433.     fspdev/fspdevInt.h
  434.     fspdev/fspdevControl.c
  435.     fsrmt/fsrmt.h
  436.     fsrmt/{fsrmtFile,fsrmtIO}.c
  437.     fsrmt/{fsrmtInt,fsrmtDomain}.h
  438.     fsutil/fsutil.h
  439.     fsutil/fsutilNotify.c
  440.     proc/procExit.c
  441.     rpc/rpcDebug.c
  442. Sync_RemoveWaiter        # delete (unused and hard to implement).
  443.     sync/syncLock.c
  444.     sync/sync.h
  445. Sync_ResetLockStats        # keep.
  446.     sys/sysCalls.c
  447. Sync_SemClear            # call Sync_LockClear.
  448.     dev/devScsiDevice.c
  449. Sync_SemInitDynamic        # call Sync_LockInitDynamic.
  450.     dev/devNet.c
  451.     dev/symm.md/{devScedTape,devDynixBlockDevice,devScedConsole}.c
  452.     dev/sun3.md/{devSCSI3,devSCSI0,devJaguarHBA,devXylogics450}.c
  453.     dev/sun4.md/{devJaguarHBA,devSCSI0,devSCSI3,devXylogics450}.c
  454.     dev/ds3100.md/{devSII,devGraphics}.c
  455.     dev/devBlockDevice.c
  456.     dev/{devScsiDevice,devDiskStats}.c
  457.     net/{netCode,netArp}.c
  458.     proc/{procTable,procServer}.c
  459.     rpc/rpcInit.c
  460.     sched/schedule.c
  461.     timer/{timerClock,timerQueue}.c
  462.     vm/sun3.md/vmSun.c
  463.     vm/sun4.md/vmSun.c
  464.     vm/ds3100.md/vmPmax.c
  465. Sync_SemInitStatic        # use Sync_LockInitStatic.
  466.     dev/sun3.md/devZ8530.c
  467.     dev/sun4.md/devZ8530.c
  468.     dev/ds3100.md/devDC7085.c
  469.     dev/devSyslog.c
  470.     dev/devDiskStats.c
  471.     net/netRoute.c
  472.     prof/sun3.md/_mcount.c
  473.     prof/sun4.md/_mcount.c
  474.     rpc/{rpcInit,rpcDaemon,rpcServer,rpcCall}.c
  475.     sys/sysPrintf.c
  476.     utils/trace.c
  477.     vm/vmTrace.c
  478. Sync_SemRegister        # use Sync_LockRegister.
  479.     dev/devSyslog.c
  480.     proc/procServer.c
  481.     prof/sun3.md/_mcount.c
  482.     prof/sun4.md/_mcount.c
  483.     rpc/{rpcInit,rpcDaemon}.c
  484.     sched/schedule.c
  485.     utils/trace.c
  486.     vm/vmTrace.c
  487. Sync_Semaphore            # make equivalent to a Sync_KernelLock.
  488.     mach/symm.md/machMon.c
  489.     dbg/sun4.md/dbgMain.c
  490.     dbg/sun3.md/dbgMain.c
  491.     dbg/ds3100.md/dbgMain.c
  492.     dev/devNet.c
  493.     dev/devQueue.h
  494.     dev/devQueue.c
  495.     dev/symm.md/{devDynixBuf,devScedTape}.h
  496.     dev/symm.md/devDynixBlockDevice.c
  497.     dev/symm.md/devScedConsole.h
  498.     dev/sun3.md/{devSCSI3,devZ8530,devSCSI0,devJaguarHBA,devXylogics450}.c
  499.     dev/sun4.md/{devJaguarHBA,devSCSI0,devSCSI3,devXylogics450,devZ8530}.c
  500.     dev/devDiskStats.h
  501.     dev/ds3100.md/{devDC7085,devSII,devGraphics}.c
  502.     dev/devSyslog.c
  503.     dev/devBlockDevice.c
  504.     dev/{devScsiDevice,devDiskStats}.c
  505.     net/{netRoute,netCode}.c
  506.     net/net.h
  507.     net/sun3.md/{netLEXmit,netIEXmit,netUltra}.c
  508.     net/netArp.h
  509.     net/sun4.md/{netIEXmit,netUltra}.c
  510.     net/ds3100.md/netLEXmit.c
  511.     net/netInt.h
  512.     net/netTypes.h
  513.     net/netArp.c
  514.     proc/procTypes.h
  515.     proc/{procTable,procMisc,procServer}.c
  516.     prof/sun3.md/_mcount.c
  517.     prof/sun3.md/timer.h
  518.     prof/sun4.md/_mcount.c
  519.     rpc/rpcPacket.h
  520.     rpc/rpcInit.c
  521.     rpc/{rpcClient,rpcServer}.h
  522.     rpc/{rpcDaemon,rpcServer,rpcCall,rpcOutput}.c
  523.     sched/sched.h
  524.     sched/schedule.c
  525.     sys/sysPrintf.c
  526.     timer/{timerInt,timer}.h
  527.     timer/{timerClock,timerQueue}.c
  528.     utils/trace.c
  529.     vm/sun3.md/vmSun.c
  530.     vm/sun4.md/vmSun.c
  531.     vm/vmTrace.c
  532.     vm/ds3100.md/vmPmax.c
  533. Sync_SemctlStub            # (System V semaphores) keep.
  534.     mach/ds3100.md/machUNIXSyscall.c
  535.     sys/sysSysCall.c
  536. Sync_SemgetStub            # (System V semaphores) keep.
  537.     mach/ds3100.md/machUNIXSyscall.c
  538.     sys/sysSysCall.c
  539. Sync_SemopStub            # (System V semaphores) keep.
  540.     mach/ds3100.md/machUNIXSyscall.c
  541.     sys/sysSysCall.c
  542. Sync_SetWaitToken        # keep.
  543.     proc/procExit.c
  544.     sync/syncLock.c
  545.     sync/sync.h
  546. Sync_SlowBroadcast        # Delete.  Convert the caller to use a 
  547.                 # condition variable and call Sync_Broadcast
  548.                 # (hopefully Mary or JHH will do this for you).
  549.     net/netCode.c
  550. Sync_SlowBroadcastStub        # user-level sync.  delete (replace with
  551.                 # initialization check & condition_broadcast
  552.                 # call in library).
  553.     mach/symm.md/machSyscallTrace.c
  554.     sys/sysSysCall.c
  555. Sync_SlowLockStub        # user-level sync.  delete (replace with
  556.                 # initialization check & mutex_lock call in
  557.                 # library).
  558.     mach/symm.md/machSyscallTrace.c
  559.     sys/sysSysCall.c
  560. Sync_SlowMasterWait        # Delete.  Convert the caller to use a
  561.                 # condition variable and call Sync_Wait
  562.                 # (hopefully Mary will do this for you).
  563.                 # (Actually may want to define a variant of
  564.                 # Sync_Wait in which the caller explicitly
  565.                 # specifies the lock.)   
  566.     net/netCode.c
  567.     net/sun3.md/netUltra.c
  568.     net/sun4.md/netUltra.c
  569. Sync_SlowWait            # (mostly invoked via Sync_Wait).  check for
  570.                 # initialization & sleep on the C Threads
  571.                 # condition variable.  Locking takes some
  572.                 # thought.  Check whether got signal.  Set
  573.                 # process state before & after sleeping.
  574.     Include/user/sync.h
  575.     fscache/{fscacheReadAhead,fscacheBlocks}.c
  576.     fsconsist/fsconsistCache.c
  577.     fsdm/fsdmDisk.c
  578.     fspdev/fspdevSrv.c
  579.     fsprefix/fsprefixOps.c
  580.     fsutil/{fsutilHandle,fsutilRecovery}.c
  581.     lfs/{lfsDirOpLog,lfsFileLayout,lfsSeg,lfsMem}.c
  582.     proc/{procDebug,procExit,procTable,procRecovery,procMigrate}.c
  583.     proc/procFamily.c
  584.     recov/{recovery.c,recovProc.c}
  585.     sig/signals.c
  586.     utils/traceLog.c
  587.     vm/{vmCOW,vmSeg,vmPage,vmMap,vmServer,vmSubr}.c
  588. Sync_SlowWaitStub        # user-level sync.  delete (replace with
  589.                 # initialization check & condition_wait call
  590.                 # in library)
  591.     mach/symm.md/machSyscallTrace.c
  592.     sys/sysSysCall.c
  593. Sync_StoreDbgInfo        # keep.
  594.     proc/procTable.c
  595. Sync_Unlock            # Call mutex_unlock.  Should verify that the
  596.                 # lock is initialized.
  597.     dev/symm.md/devDynixBlockDevice.c
  598.     vm/lock.h
  599. Sync_UnlockAndSwitch        # Use mutex_unlock to free the given lock
  600.                 # (first verifying that it's initialized?).
  601.                 # Don't use Proc_ContextSwitch, because the
  602.                 # process's new state must be set before the
  603.                 # monitor lock is release. (XXX didn't get
  604.                 # this right originally)
  605.     sync/syncLock.c
  606.     sync/sync.h
  607. Sync_UserLock            # (lock type for user programs.)  Replace with
  608.                 # struct mutex & "initialized flag".
  609.     Include/user/sync.h
  610.     sync/sync.h
  611.     sync/syncUser.c
  612. Sync_WaitTime            # in WaitTimeSubr wait on the per-process
  613.                 # condition variable.
  614.     mach/symm.md/machSyscallTrace.c
  615.     fs/{fsInit,fsSelect,fsPageOps}.c
  616.     lfs/{lfsSeg,lfsCacheBackend}.c
  617.     main/sun3.md/mainInit.c
  618.     main/sun4.md/mainInit.c
  619.     main/ds3100.md/mainInit.c
  620.     main/symm.md/mainInit.c
  621.     proc/procExit.c
  622.     recov/recovProc.c
  623.     sched/schedule.c
  624.     sys/{sysCalls,sysSysCall}.c
  625. Sync_WaitTimeInTicks        # see Sync_WaitTime.
  626.     sync/syncSleep.c
  627.     sync/sync.h
  628. Sync_WaitTimeInterval        # see Sync_WaitTime.
  629.     sched/schedule.c
  630.     sync/syncSleep.c
  631.     sync/sync.h
  632. Sync_WakeWaitingProcess        # broadcast on whatever condition the process
  633.                 # is waiting for.  Don't set process state,
  634.                 # either here or in ProcessWakeup.
  635.     proc/procMisc.c
  636.     sig/signals.c
  637.     sync/syncLock.c
  638.     sync/sync.h
  639. Sync_WakeupProcess        # broadcast on per-process condition variable.
  640.     sync/syncSleep.c
  641.     sync/sync.h
  642. UNLOCK_MONITOR            # keep.
  643.     dev/{devNet.c,devTty.c}
  644.     dev/symm.md/devScedTape.c
  645.     dev/sun3.md/devMouse.c
  646.     fscache/{fscacheOps.c,fscacheBlocks.c,fscacheReadAhead.c}
  647.     fsconsist/{fsconsistIOClient.c,fsconsistCache.c}
  648.     fsdm/fsdmDisk.c
  649.     fsio/{fsioPipe.c,fsioStream.c}
  650.     fslcl/fslclNameHash.c
  651.     fspdev/fspdevSrv.c
  652.     fsprefix/fsprefixOps.c
  653.     fsrmt/fsrmtFile.c
  654.     fsutil/{fsutilHandle.c,fsutilNotify.c,fsutilHandleScavenge.c}
  655.     fsutil/fsutilRecovery.c
  656.     lfs/{lfsFileLayout.c,lfsLoad.c,lfsSeg.c,lfsMem.c,lfsCacheBackend.c}
  657.     lfs/lfsDirOpLog.c
  658.     mem/memory.c
  659.     net/netArp.c
  660.     ofs/{ofsAlloc.c,ofsIo.c,ofsFileDesc.c}
  661.     proc/{procDebug.c,procExit.c,procTable.c,procTimer.c,procRecovery.c}
  662.     proc/{procEnviron.c,procMigrate.c,procFamily.c}
  663.     prof/profProfil.c
  664.     recov/{recovery.c,recovProc.c}
  665.     rpc/{rpcSrvStat.c,rpcHistogram.c,rpcCltStat.c}
  666.     sig/signals.c
  667.     sync/syncSysV.c
  668.     utils/traceLog.c
  669.     vm/{vmCOW.c,vmSeg.c,vmStack.c,vmPage.c,vmMap.c,vmMigrate.c,vmServer.c}
  670.     vm/{vmSubr.c,vmSwapDir.c,vmPrefetch.c}
  671.     vm/symm.md/vmSymm.c,
  672. UNLOCK_MONITOR_AND_SWITCH    # see Sync_UnlockAndSwitch
  673.     proc/procExit.c
  674.     sync/sync.h
  675.  
  676. Local Variables:
  677. mode: xref
  678. fill-column: 78
  679. End:
  680.